Skip to main content

Full text of "mit :: ai :: aim :: AIM-215"

See other formats


Artificial -Intelligence 

Memo No, 215 April 1971 




Mark Dawson 

Work reported herein was conducted at the Artificial Intelligence 
Laboratory s a Massachusetts Institute of Technology research program 
supported by the Advanced Research Projects Agency of the Department 
of Defense and was monitored by the Office of Naval Research under 
Contract Number NOOO14-7Q-A-0362-0Q02, 

How To Get On To The System 

This memo Is Intended to get very new users started on the MAC Al 
system. !t presents some simple rituals for making and edltfng 
f I les,gett Ins print out/making mlcrotapes and so on* Most of the rituals 
given arc not the only ways of doing something or even neccessarily the 
simplest, but they do work* 

Some sources of more detailed documentation are referenced at the end 
of this nemo tread them when you want to know more. 

If you don't understand something or need any kind of help isJs. Mo one 
mtnds;they all know how you feel. 

Cautionary Note 

This Is a research system Intended for maximum flexibility. There are 
few built In safeguards and It Is not Idiot proof. It is up to vou not to 
screw other users. If In doubt or if you get an error message you don't 
understand ask , 

Microtapes are every users back up storage. They are used to safeguard 
data and programs whtch must not be lost at any cost so be especially 
careful with all tape routines* 

Getting a User Name 

Go to Minsky's secretary and fill out all the appropriate forms* Your 
user name should be known to the system in about a week* If It takes much 
longer ask someone what to do. For the rest of this memo we'll pretend 
that your user name Ts USER. 

A Note On Notation 

Everything you type on a console will be shown below In capital letters 

and Indented e.g, 
Everything the system types back will be also In caps and indented a 
bit more e.g. 
Arbitrary strings tnstde commands are shown by lower case strings e*g» 

Spaces by _ as in 

Carriage returns by 

Control characters, produced by hitting the CTRL key and the appropriate 
character key s fmul taneousl y by e f g, 
ctrI A 
ctrI K 

Alt mode # go£ by hfttlng the ESC key. Is represented by a circled dollar 
sign: (?) 

Don f t confuse thts wfth the dollar sign key (shift UJ even though they 

be t l*i print t he 5 are when you hit t he keys . 

Logging In and Out 

Find a free console which is showing 
(Here and elsewhere the precise message given by the system may vary.) 
Now type: 
ctrl Z 
The console win respond: 
DDT 27it 
followed by any message directed at the whole user community. 
Now type your user name followed by (£) U 

You are now logged In to DDT which Is the top level program In the 
system. Typing: ctrl Z at any time win brfng you back up to DDT 
and it Is from here that you log out by typing 


The system wJll respond with 
and you can go home* 
Always log out before you leave the console. 

Making a TECO File. 

TECO Is a character editor, ft lets you construct and edit files and 
file them on disc or tape for later use. Type: 
TECO ct rl K the system will respond: 

TECO 100-cr 
Now you are in TECO* All TECO commands are terminated by ffiyj) ■ This 
says # tn effect,'Now do It. 1 Until you type the two alt modes you can quit 
(cancel) any comnand string by typing 
TECO filing and reading commands all start with an % E % * Try: 

EV © 

This will display your f T le directory which should have at least one 
file in It (otherwise the system will garbage collect you) Lets make 
another one. , l l Is the Insert command: 
lalmostanystrlng (D(f) 
inserts 'almostanystrlne' In the buffer. The string can Include any 
combination of keyboard characters, spaces^carr Sage returns etc except 
ct MZ or alt mode. Try It* By the way, [f you htt a wrong key while typing 
In a string, you can erase the n preceding characters by hitting the 
■RUBOUT 1 key n times. The characters you've rubbed out will be echoed at 
the top left of your console* 

You haven 1 t made a file yet - you still have to get the contents of the 
buffer into the output buffer, give It a name and file It, Do: 

Now look at your fTle directory again (EY($)(|) ). You've created a 
temporary file called TECO OUTPUT. Be careful, though, it will disappear 
without trace If you ctve tt a chance. Now choose a name for your file* 
Flies must have two names, f t lenamel and f i I ename2, separated by a space* 
For reasons which will become cl ear,f I J cname2 Is almost invariably a 
number. We* 11 name this one TftYDUT_l* Type; 
EETRY0UT_1 (|)@ 
and look at your file directory a^atn. There it Is. 
The complete ritual, so far, goes: 



Icontentsofthef He ($X*D 


Elf Ilenamel_l(|)® 

Editing a TECO "File 

Before you can edit a file you must read it back Into the buffer. Type: 
ERTRYOUT^l ($)Y (gg) 

Incidently the T Y* after the first alt mode controls where the file is 
read to and how. A ■ Y* clears the buffer before 'yanking' the new file 
Into lt;an "A* in this position would append the file to the bottom of 
anything already In the buffer;an ' g 1 would make a listing of the file 
on the Line Printer. 

All editing is done with respect to a pointer which can be moved around 
the contents of the buffer and which can be seen on the display as /\ ♦ 
Pointer moving commands are as follows: 


J (f)$) Eo to the top of buffer contents 

ZJ H?© E° to t ' ae bottom of buffer contents 

+nL (fX^ move +n 1 tnes, poi nter left at beginning of the 

line* Note that n can be 0,and that n»l Is assumed in default* 
nC (1X5^ move n characters forward 

nR (D© move n characters reverse 

S5trlng(P{$) search forwards for 'strtng'pointer goes to right 

hand end of string* 

-Sstr Eng {$)($) search backwards for ■string' po Inter to left end 

Now you know how to move the pointer around you can edit the contents 

of the file* Editing commands are; 

±nD($X|) delete ±n characters from the pointer 

±nK@® kill (delete) ±n lines from the pointer 

UK ($Ys) kill entire buffer contents 

and of course 

Istrtng (£)(& J Insert ' strlng'af ter the pointer* 
Note that K (f)(f) *» i 1 1 delete the rest of the line after the pointer 
including the carriage return. ±99K(|}§) Is u&eful for deleting 
everything above or below some point In the buffer. 

Greater and Greater 

Now you want to flic Che ed f ted version of TRYOUT 1. If you reflle It 
under the same name end screw anything up you bill lose the original as 
well. So file Ft as TRYOUT 2. Wal t f though, you don f t have to keep track of 
whfch number you've got up to* Use '>' as filename 2 and TECO will create 
fTlename2 one greater than the previous number. You can use this for 
reading as well e.g* 

EW @© 

EETRY0UT_> ®g) 
ertryqut_>($)y (D(J) 
(Do some more editing) 

EETRYOUT_> g)g) 
If you look at your file directory after all this you' It find you're up 
to TRYOUT 5 and still have TRYOUT 1 and 2, 

Whan you've finished for the day and are about to log out, delete all 

the junk (prevtous versions of files) iwJth ED. 

EDf Menjanel_f I lename2 (J)(f) deletes a file. 
You can use r <' to remove the 1 east numbered file: 
EDf i 1 enamel_< /?}($) . 

Page After Page After Paj»e 

So far # the files have been single pages. To make a multi-page filet 

I textofpasel (|)(D Insert text of first page 

EW £_§)(§) make somewhere for ft to so or you 1 It lose 

P (f)(f) Put It out there 

ftextofpage2 ^)(D insert text of second page 

(etc etc) 

EEf I lenamel_> ($)($) name and file atl the pages. 

To read and edit a multi-page file; 

ERf ilenamel_> (?) ¥ (S)d) yank the first page Into the buffer 

EW(j)£j) If you are going to re-ftte an edited 
vers ion 

(edit page 1} 

P®(0 Put out the first page and get the next 

one into the buffer 
(edit page 2) 


(etc etc) 

EEf Menamel_> (£$) ftle the edited version. 

If you had Just wanted to read the file, not edit or re-flle It, you 
could have missed out the EW and done Y (pfy 's Instead of the P(l)($ * 5 to 
Fiet each new page fnto the buffer, los fng the previous buffer contents 
down the drain where alt unwanted duplicates of data go. 

To turn a single page Into several insert ctrI L wherever you want a 
page boundary before re~flling It* 

To condense a multi-page file Into one page get the new pages after the 
first into the buffer with AA0X$) instead of P or Y„ 

To stitch two files together into one: 

ERft1el_>®Y g)g) read the first file 

EW ®® 

99P(j){p get all the pages out 

ERf Ile2_>g)A®(f) 'A* for append 
EEnewf f lename_> £?) 


£ Rf i 1 enarne l_f i 1 enam e 2 (£) @ @{J) 
will put Che whole file out on the line printer. (You can still use '>' 
as fllename2 if It's appropriate, ) 

Evading the Grim File Gobbler 

FEles stored on disk have been known to disappear in really bad system 
crashes so anything you really want to keep, put on Mlcrotape. 

DGet yourself a clean, narked, mlcrotape* (Ask.) 

2)Write your name on the reel* Every kind of Ink I ' ve found so far 
rubs off so a sticky label may be the answer. 

3)FTnd a free tape drive, 

10 Switch the off/wrT te-lock/wri te switch to 'off 1 . 

5) Load the tape. (Get someone to show you how the first time*) 

6) Switch to 'wrl te 1 • 

7)Note the number of the tape drive. Are you sure? 
Now, back at your console, give the tape a name. (One day you may have 
several tapes? 


'n 1 is the tape drive number. Are you su re ? 
'nam* Is any three character name for the tape* 

Now you can write on the tape: 

OERf llenamel_f llervameZ (?) nE I YEE Q)(S) 
The first 'Q 1 Indicates the source device CO for disk) 
The f n r Indicates the destination devlcejput the tape drive number 

FIlenane2 must be explicit* Do not use % >* m 

Now do EV {$)i$} to look at your tape file directory. So far we've been 
taking advantage of TECO assuming you mean 'disk 1 unless told otherwise 
and then remembering what you last told Ft* To look at your disk file 
directory a^aln you must sayt 
And back to the tape directory! 
EYUTn: (£ 
uhere 'n' U the tape drive number* 

Lastly^ to flap (remove) a tape, do: 

This should run the tape back onto It's reel and you can remove tt 
(switch to 'off* first). 


NEVER remove a tape that hasn't been flapped fully* 

If In doubt ASK FOR HELP. 

Reading Other Users FTles 

Simple If you remember TECO assumes that If you don't tell it something 
you mean the sane as Inst timet 
For Instance: 

Is an abbreviation for 
EYD5K: username; ($)§) 
In default TECO assumes the 'DSK' and remembers the last user name It 
was told (when you logged In). So to look at FRED f s file directory do: 
Nov* anything you say will refer to FRED's files unless you tell It 
otherwise e»g. by: 

ERTRYOUT_>_DSK: USER; ($) Y @($) 

Search Macros 

A useful feature v-hen editing TECO files Js a facility that lets you 
search for every occurrence of a given string on a page tn the buffer end 
do something (delete* Insert etc) when It Is encountered. 

For Instance to replace every occurrence of 'A* by 'SOME 1 do; 

J (fXf) to get to the top of the buffer tf you're not already 
there, then: 

<S_A_(1);2RD!S0ME($)> ®(g 
This saysrsearch for each occurrence of spaceAspace In the buffeomove 

two characters left, delete one character to the rttfht and Insert SOME. 

In general the form I s s 
<Sstr injt (§) ; opera t tons 1st r f ng($) > (%)(p 

You can miss out the p lstr]ng($) f completely (or the operations for 
that matter) • 

Q Regl ste rs 

Useful for Juggling blocks of text or holding strings that you're going 
to Insert all over the place. 

clear the buffer (If you need to) 

where 'q' Is the name of the Q register^one character from A to 2 or a 
number from to S. 

The string remains in the selected Q register until you log out or 
until you change it. (or until you kill the job - see below) 
Gq (p® 
Inserts the Q register contents wherever you (the pointer) are, 

will Insert n copies of the Q register contents In the buffer. 

How To Do n Things At Once 

We'll use some useful things as examples, 
You're In TECO and have Just written a PLANNER program. To help debug it 
you v^ant to ' PrettyPr I nt t It. Dos 
ct r! Z 
to get Into DOT, No* do: 
NLISP etrl K 
The systen responds 
to ffnd out how much storage you want. Type 

for 'normal' How read the program which will do the work - 'GRIND 1 j 
( U RE AD J3R I ND_>_COM) 
System responds; 

Load the program by typing ctrt o and tohen it is loaded type; 

The program will teH you when It's finished by: 
to say that it has filed the new version back fr> TECO, Now you can look 
at tt or print it out, Do : 

to get back Into DDT, YOU DON'T HAVE TO RELOAD TECO, Do: 

The system responds: 
TECO &. J 
Mow do: 

and you are back in TECO, You still have the LISP - you can see this by 
doing a PEEK, ct rl Z again and types 
PEE KctrI K 
You* 11 see that under your u&er name are the names of the three jobs 
that you have going, TECO, LISP and PEEK, PEEK Is the only one using any 
time. You can get back to any one of the others exactly *jhere you left 
off by going back to DDT, and dotng^J's until you get to the one you 
want (This Is called 'going round the job ring') and then dofng (f> P to 
get down Into It, This is particularly useful If you are running, say, a 
PLANNER program (Which takes a long time to reload) but want to use TECO 
for a short period or to PEEK to find out what all those other users are 
doing to make the system so slow. By the way. It's antisocial to keep jobs 
open that you don't intend to use for a long time # slnce It takes up 
valuable core.You can kill a Job from DDT by moving round the job ring 
till you get to it and doing: 
:Kf LLer 

which kills the job and moves you round the job ring to the next one. 
You can kill PEEK by doing : 

at any time while you*re running it :thEs cakes you up to DDT and kills 
It In one fel 1 swoop. 

tt 1 11 Keep Till Tomorrow 

Normal 1 y, when you Ior out, you lose the current state of the program you 
were working with* If It is, say ,a LISP Chat you've put a lot of work 
Into you'll be reluctant to leave tt even if ft means mfssln* dinner 
and/or annoying your wife. So here is a way to save the complete state of 
a program on disk so you can sot It back tomorrow 

1) Invent a file name for It. 

2) Dump It on your disk with: 
(j)Y f i1enamel_f ilename2 cr 

Now ft Is a TECO disk file so you can 1o£ out safety. To get It back 
aga in tomorrow: 

1) From DDT, name the job 

jobname/$} J 
You might use YLISP (for 'yesterdays Lisp 1 ) as the job name for 
example* note that you don*t have to load a new LISP as the complete 
state of your previous LISP is on disk. 

2) Load the file with 

£$) L f Menarnel_f f lename2 cr 

3) Start at starting location with 

Now you are back exactly where you left off yesterday* Don't Forget to 
ED the file from TECO when you don't need It any more - It's taking up 
lots of room. 

Send, Cormunleate and Mall 

Some times, while you are In the middle of working away at a console, a 
{usually rude) message will mysteriously appear in front of you* Wouldn't 
you like to send people rude messages? Well* this Is how* 
To get Into r corrmunl cate' mode; type: 
Ctrl hackarrow C address... 
where "address 1 Ts el thor a user name or teletype number (backarrow Is 
shift ;yes,thats right, you were pressing three keys at once then). The 
system will respond with a f G' for go or'B 1 for busy* If It was G,your 
console fs now tied to the other users console until one of you types: 
etrl backarrow N 
When you start to communicate with someone your message Is prefixed by: 
just to let them know that they are now In commun fcate mode too* 
'SEND 1 will send a message one way without tyfng the consoles together. 

rSEND_usernafne_rrȣ$sage ct^rlC 
The message will be prefixed on their console byt 

Of course the people you send messages to must be currently logged In. 
You can check quickly by doing: 
TTY ctrI F 
from DDT* This doesn't take you out of DDT by the way. [f you want to 
send a message to someone who's not logged In you can use MAIL* Dor 

sMAl L^usernainR^riessaK^ c t r 1 C 
and they will get the message the next time they Ioe In. 

Further Document at Ion 

Some sources of further documentation are listed belov-* 
From DDT type: 
INFO ctrU 
and then: 

to get an up to date listing of TECO commands. Much useful Information Is 
reputed to live tn fMFO tn any case* 

The following A.I. Memos should be available in the ninth floor 
document room; 

A.I. Memo 81 PDP-6 TECO 

A- 1. Memo 11*7 A Multiple Procedure DDT 

A. I. Memo 1G1A ITS 1*5 Reference Manual (This contains details of 
PEEK amongst other things) 

Some people have copies of an anonymous draft Internal note called 
*Uslng the MAC PDP-6 Time-Sharing system 1 get a Xerox copy If you can* 

This Memo will be suppl emented,as and »hen,with memos bearing the same 
number and an alphabet Jc suffix. 

The moat useful source of documentation Is your ov*n notes on what other 
users tell you. 

Finally* this Memo was produced using TJ6, See A.I, Memo 16UA for 
detal Is ,